package com.reactor.operator;

import reactor.core.publisher.Flux;
import reactor.test.StepVerifier;

/**通常情况下，我们需要对源发布者发出的原始数据流进行多个阶段的处理，并最终得到我们需要的数据。这种感觉就像是一条流水线，从流水线的源头进入传送带的是原料，经过流水线上各个工位的处理，逐渐由原料变成半成品、零件、组件、成品，最终成为消费者需要的包装品。这其中，流水线源头的下料机就相当于源发布者，消费者就相当于订阅者，流水线上的一道道工序就相当于一个一个的操作符（Operator）。

下面介绍一些我们常用的操作符。

1）map - 元素映射为新元素

map操作可以将数据元素进行转换/映射，得到一个新元素。
 * @author DELL
 *
 */
public class Map {

	public static void main(String[] args) {
		StepVerifier.create(Flux.range(1, 6)    // Flux.range(1, 6)用于生成从“1”开始的，自增为1的“6”个整型数据；
	            .map(i -> i * i))   // map接受lambdai -> i * i为参数，表示对每个数据进行平方；
	            .expectNext(1, 4, 9, 16, 25, 36)    // 验证新的序列的数据；
	            .expectComplete();  // verifyComplete()相当于expectComplete().verify()
	}

}
